﻿Imports Logica


Public Class ConsultarCuentaContable

    Private ucModificar As ModificarCuentaContable

    ''' <summary>
    ''' Verifica si el campo de codigo a sido modificado para generar la busqueda respectiva.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 15/06/2010, Modificado: 16/06/2010</remarks>
    Private Sub txtCodigo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCodigo.TextChanged
        lblRetroalimentacion.Text = ""

        dgvConsultarCuenta.Rows.Clear()

        Dim listaDatos As New List(Of Hashtable)
        Dim i As Integer = 0

        ' If Not txtCodigo.Text = "" Then
        Try
            listaDatos = Gestor.consultarCuenta(txtCodigo.Text)
        Catch sqlEx As SqlClient.SqlException
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Error de Conexión."
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        If Not listaDatos.Count = 0 Then
            For Each cuenta As Hashtable In listaDatos
                dgvConsultarCuenta.Rows.Insert(i, cuenta("codigo"), cuenta("descripcion"), cuenta("saldo"))
                i = i + 1
                lblRetroalimentacion.ForeColor = Color.Green
                lblRetroalimentacion.Text = "Resultados encontrados."
            Next
        Else
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "No hubo resultados en la búsqueda."
        End If

        ' Else
        ' Exit Sub
        ' End If



    End Sub
    ''' <summary>
    ''' Carga el User Control y deja la retroalimentacion en blanco.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 15/06/2010, Modificado: 16/06/2010</remarks>
    Private Sub ConsultarCuentaContable_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lblRetroalimentacion.Text = ""
        Dim datosUsuario As Hashtable

        datosUsuario = Gestor.usuarioActual()

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 17) Then
            txtCodigo.ReadOnly = True
        End If

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 18) Then
            btnAgregar.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 19) Then
            btnModificar.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 20) Then
            btnEliminar.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 4) Then
            btnAgregarMovimiento.Enabled = False
        End If

        txtCodigo.Focus()
        listarTodos()

    End Sub

    ''' <summary>
    ''' Accion del boton de modificar cuenta contable
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 15/06/2010, Modificado: 18/06/2010</remarks>
    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        Dim config As Configuracion
        Dim ubicacion As New Point(152, 0)
        Dim codigo As String
        Dim descripcion As String
        Dim saldo As Double

        Try
            codigo = dgvConsultarCuenta.SelectedRows(0).Cells(0).Value
            descripcion = dgvConsultarCuenta.SelectedRows(0).Cells(1).Value
            saldo = dgvConsultarCuenta.SelectedRows(0).Cells(2).Value

            ucModificar = New ModificarCuentaContable(codigo, descripcion, saldo)
            ucModificar.Location = ubicacion

            config = Me.Parent
            config.Controls.Add(ucModificar)
            config.mostrarControl(ucModificar)
            'config.tvConfiguracion.SelectedNode = Nothing

            lblRetroalimentacion.Text = ""
        Catch ex As Exception
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Seleccione una fila."
        End Try
        

    End Sub
    ''' <summary>
    ''' Accion del boton de eliminar cuenta contable.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 15/06/2010, Modificado: 18/06/2010</remarks>
    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        Dim codigo As String

        Try
            codigo = dgvConsultarCuenta.SelectedRows(0).Cells(0).Value
            Dim Box As MsgBoxResult = MsgBox("Esta seguro de que desea eliminar la cuenta contable?", MsgBoxStyle.YesNo)

            If Box = MsgBoxResult.Yes Then
                Try
                    Gestor.eliminarCuenta(codigo)
                    lblRetroalimentacion.ForeColor = Color.Green
                    lblRetroalimentacion.Text = "Se ha eliminado con éxito."
                    dgvConsultarCuenta.SelectedRows(0).Visible = False
                Catch sqlEx As SqlClient.SqlException
                    lblRetroalimentacion.ForeColor = Color.Red
                    lblRetroalimentacion.Text = "Error de conexión."
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try
            Else
                Exit Sub
            End If

            lblRetroalimentacion.Text = ""
        Catch ex As Exception
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Seleccione una fila."
        End Try
    End Sub

    ''' <summary>
    ''' Accion del boton de agregar cuenta contable
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 15/06/2010, Modificado: 16/06/2010</remarks>
    Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click
        Dim diagAgregarCuenta As New AgregarCuentaContable
        diagAgregarCuenta.Visible = True
    End Sub
    ''' <summary>
    ''' Accion del boton de agregar movimiento.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 19/06/2010</remarks>
    Private Sub btnAgregarMovimiento_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregarMovimiento.Click
        Dim codigo As String

        Try
            codigo = dgvConsultarCuenta.SelectedRows(0).Cells(0).Value

            Dim diagMovimiento As New AgregarMovimiento(codigo)
            diagMovimiento.ShowDialog()
        Catch ex As Exception
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Seleccione una fila."
        End Try

    End Sub
    ''' <summary>
    ''' Validacion del capo de Codigo.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 27/06/2010</remarks>
    Private Sub txtCodigo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCodigo.KeyPress
        If Char.IsLetterOrDigit(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        Else
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "No se pueden ingresar simbolos en el" + vbCrLf + " campo de '" & txtCodigo.Tag & "'."
            e.Handled = True
        End If

    End Sub

    ''' <summary>
    ''' Lista Todas las cuentas contables.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 28/06/2010 Modificar 28/06/2010</remarks>
    Private Sub listarTodos()
        Dim listaDatos As New List(Of Hashtable)
        Dim i As Integer = 0

        Try
            listaDatos = Gestor.consultarCuenta(txtCodigo.Text)
        Catch sqlEx As SqlClient.SqlException
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Error de Conexión."
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        If Not listaDatos.Count = 0 Then
            For Each cuenta As Hashtable In listaDatos
                dgvConsultarCuenta.Rows.Insert(i, cuenta("codigo"), cuenta("descripcion"), cuenta("saldo"))
                i = i + 1
                lblRetroalimentacion.ForeColor = Color.Green
                lblRetroalimentacion.Text = "Resultados encontrados."
            Next
        Else
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "No hubo resultados en la búsqueda."
        End If
    End Sub
End Class
